package com.partner.boot.common;

import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.http.HttpUtil;
import com.partner.boot.mapper.UserMapper;
import com.partner.boot.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
@Slf4j
public class InitRunner implements ApplicationRunner {
    @Resource
    UserMapper userMapper;

    /**
     * 登录优化，在项目启动成功之后就运行该方法，解决用户在第一次访问接口时间过长，优化连接数据库、初始化Tomcat连接的时间
     *
     * @param args
     */

    @Override
    public void run(ApplicationArguments args) {
        // 异步请求
        ThreadUtil.execAsync(() -> {
            try {
                RedisUtils.ping();    // redis数据探测，初始化连接
                log.info("redis初始化连接成功");
                userMapper.select1(); // 数据库探测，在项目启动时候查询一次数据库，防止数据库懒加载
                log.info("启动Tomcat连接查询成功");
                HttpUtil.get("http://localhost:9090/"); // 发送一次异步的web请求，来初始化tomcat连接
                log.info("启动项目web请求查询成功");
            }catch (Exception e) {
                log.error("启动优化失败", e);
            }
        });
    }
}
